package util;

import java.util.LinkedList;
import java.util.List;
import studentsAndDocentWithTutorship.Docent;
import studentsAndDocentWithTutorship.Instructor;
import studentsAndDocentWithTutorship.Person;
import studentsAndDocentWithTutorship.Student;
import studentsOffice.StudentsOffice;
import subjectAndProfessorship.Professorship;
import subjectAndProfessorship.SettingProfessorship;
import subjectAndProfessorship.Subject;
import university.University;
import degreeAndSyllabus.Degree;
import degreeAndSyllabus.SubjectInPlan;

public class Main {
	public static void main(String[] args) {
		
		// Oficina de alumnos, Universidad
		StudentsOffice oficinaDeEstudiantes = new StudentsOffice(); 
		University unq = new University("UNQ", oficinaDeEstudiantes); 
	
		// Estudiantes, Docentes y Personas
		Student mariaLaura = new Student ();
		Student nati = new Student(); 
		Student damian = new Student(); 
		Student guido = new Student (); 

		Docent fidel = new Docent(); 
		Docent ariel = new Docent(); 
		Docent diego = new Docent(); 
		Docent hortencia = new Docent ();
		
		Person natiStefy = new Person("Nati Stefy", "Rodriguez", "nati.stefania@gmail.com", "Soltera", "Femenino", "mi ksa ;P", 223541, 1552875274, 45323598); 
		Person marilau = new Person("Maria Laura", "Medici", "marialu.medici@gmail.com", "Soltera", "Femenino", "su ksa ;P", 241122, 1558875114, 45385814); 
		Person damianG = new Person("Damian", "Gonzalia", "dgonzalia@gmail.com", "Soltero", "Masculino", "su ksa ;P", 182587, 1574876699, 46891124); 
		Person guidolo = new Person("Guido", "Marchini", "guidolo@gmail.com", "Soltero", "Masculino", "wilde xD", 208899, 1574231199, 46124424);
		Person arielM = new Person("Ariel", "Miglio", "ariel@gmail.com", "Casado", "Masculino", ";P", 156825, 1671487188, 42486801);
		Person diegoT = new Person("Diego", "Torres", "diego@gmail.com", "Casado", "Masculino", ";P", 602085, 1671257128, 42507870);
		Person fidelM = new Person("Fidel", "Martinez Lopez", "fidel@gmail.com", "Separado", "Masculino", "Azcuenaga 280", 100085, 1523250028, 42001270);
		Person HortenciaA = new Person("Hortencia", "Arriola", "hortencia@gmail.com", "Casado", "Femenino", "Azcuenaga 560", 100095, 1523650028, 42005180);
		
		guidolo.beStudent(guido);
		natiStefy.beStudent(nati);
		marilau.beStudent(mariaLaura);
		damianG.beStudent(damian);
		arielM.beDocent(ariel);
		diegoT.beDocent(diego); 
		fidelM.beDocent(fidel); 
		HortenciaA.beDocent(hortencia);
		
		Instructor guidoxD = new Instructor(guido); 

		
		// Materias y catedras
		
		//Objetos2
		Subject obj2 = new Subject("Objetos 2", true, true, 3, 6, ariel);
		obj2.addRequirement("computadoras");
		obj2.addProgram("Java");
		MyDate fechaInicio = new MyDate(16, 11, 2011);
		MyDate fechaFin = new MyDate (14, 12, 2011);
		List<SettingProfessorship> horarios =new LinkedList<SettingProfessorship>(); 
		SettingProfessorship hs = new SettingProfessorship("miercoles", 16, 22, 37); 
		horarios.add(hs); 
		Professorship comisionUnica = new Professorship(ariel, ariel, 5, 15, horarios, fechaInicio, fechaFin); 
		comisionUnica.addCollaborator(guidoxD); 
		comisionUnica.addInstructor(diego); 
		obj2.addProfessorship(comisionUnica); 
		
		//Estructura de Datos
		Subject estD = new Subject("Estructura de Datos", true, true, 3, 6, fidel);
		estD.addRequirement("computadoras");
		estD.addProgram("Haskell");
		MyDate fechaInicioEstD = new MyDate(16, 11, 2011);
		MyDate fechaFinEstD = new MyDate (14, 12, 2011);
		List<SettingProfessorship> horariosEstD =new LinkedList<SettingProfessorship>(); 
		SettingProfessorship hsEstD = new SettingProfessorship("miercoles", 12, 15, 37); 
		horariosEstD.add(hsEstD); 
		Professorship comisionUnicaEstD = new Professorship(fidel, fidel, 5, 15, horariosEstD, fechaInicioEstD, fechaFinEstD); 
		comisionUnicaEstD.addCollaborator(guidoxD); 
		comisionUnicaEstD.addInstructor(fidel); 
		estD.addProfessorship(comisionUnicaEstD); 
		
	    // Matematica1
		Subject mate1 = new Subject("Matematica1", true, true, 3, 6, fidel);
		mate1.addRequirement("computadoras");
		mate1.addProgram("Haskell");
		mate1.setNumberHours(5);
		mate1.setDifficult(3);
		MyDate fechaInicioMate1 = new MyDate(16, 11, 2011);
		MyDate fechaFinMate1 = new MyDate (14, 12, 2011);
		List<SettingProfessorship> horariosMate1 =new LinkedList<SettingProfessorship>(); 
		SettingProfessorship hsMate1 = new SettingProfessorship("jueves", 16, 21, 56); 
		horariosMate1.add(hsMate1); 
		Professorship comisionUnicaMate1 = new Professorship(hortencia, hortencia, 5, 15, horariosMate1, fechaInicioMate1, fechaFinMate1); 
		comisionUnicaMate1.addCollaborator(guidoxD); 
		comisionUnicaMate1.addInstructor(hortencia); 
		mate1.addProfessorship(comisionUnicaEstD); 
		
		// Carrera
		Degree tpi = new Degree("TPI", 30, fidel, 4); 
		unq.addDegree(tpi); 
		
		// MateriasEnPlan
		SubjectInPlan matPlan2010 = new SubjectInPlan(mate1, 2010);

		
	}
}
